From 7dc6a46cffb0c19c155aae7878ea0540531b0fb0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Sat, 2 Dec 2017 11:02:31 +0100 Subject: [PATCH] gl renderer: Remove consecutive clip ops --- gsk/gl/gskglrenderops.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/gsk/gl/gskglrenderops.c b/gsk/gl/gskglrenderops.c index 8fe9e90f18..2741320b2a 100644 --- a/gsk/gl/gskglrenderops.c +++ b/gsk/gl/gskglrenderops.c @@ -62,12 +62,23 @@ GskRoundedRect ops_set_clip (RenderOpBuilder *builder, const GskRoundedRect *clip) { - RenderOp op; + RenderOp *last_op; GskRoundedRect prev_clip; - op.op = OP_CHANGE_CLIP; - op.clip = *clip; - g_array_append_val (builder->render_ops, op); + last_op = &g_array_index (builder->render_ops, RenderOp, builder->render_ops->len - 1); + + if (last_op->op == OP_CHANGE_CLIP) + { + last_op->clip = *clip; + } + else + { + RenderOp op; + + op.op = OP_CHANGE_CLIP; + op.clip = *clip; + g_array_append_val (builder->render_ops, op); + } if (builder->current_program != NULL) builder->program_state[builder->current_program->index].clip = *clip; -- 2.30.2